package rifa.entidade;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.MappedSuperclass;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;

@Entity
@Table(name = "TB_ESTADO")
public class Estado implements Serializable,Entidade {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public Estado() {

	}
	
	public boolean equals(Object obj) {
        return getClass().equals( obj.getClass() );
    }

    public int hashCode() {
        return getClass().hashCode();
    }
	
	public String toString(){  
	    return this.nome;  
	} 
	
	public Estado(String nome){
		setNome(nome);
	}
	
	public Estado(Long id ,String nome) {
		setId(id);
		setNome(nome);
	}
	
	public Estado(String sigla ,Long id) {
		setId(id);
		setSigla(sigla);
	}

	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	@Column(name = "ID_ESTADO", nullable = false)
	private Long id;

	@Column(name = "DESCRICAO", nullable = false)
	private String nome;

	@Column(name = "SIGLA", nullable = false)
	private String sigla;

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "estado")
	private List<Cidade> cidades = new ArrayList<Cidade>();

	public List<Cidade> getCidades() {
		return cidades;
	}

	public void setCidades(ArrayList<Cidade> cidades) {
		this.cidades = cidades;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getSigla() {
		return sigla;
	}

	public void setSigla(String sigla) {
		this.sigla = sigla;
	}

	public void setCidades(List<Cidade> cidades) {
		this.cidades = cidades;
	}

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

}
